<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <school>
            
        </school>
        
    </div>

    <!-- v-bind: 可以简写成 : -->


    <script>
        Vue.config.productionTip = false;

        Vue.prototype.x = 100
        /* 
         1、组件本质上是一个VueComponent的函数(构造函数) 
         2、每次调用Vue.extend 返回的都是一个新的VueComponent
         3、VueComponent实例中data必须写成函数，Vue实例中可以是函数也可以是对象
         4、new Vue(options)配置中
                data函数、methods函数、watch函数、computed函数 他们的this都是【Vue实例对象--vm】
            组件配置中
                data函数、methods函数、watch函数、computed函数 他们的this都是【VueComponent实例对象】
         5、VueComponent(组件)实例对象 可以简写为 vc(对内为vc 对外组件实例对象) 
            Vue实例对象 可以简写为 vm

         6、VueComponent.prototype.__proto__ === Vue.prototype
               控制台通过 console.log(school) 查看关系
               组件实例对象(vc) 可以访问到Vue原型上的属性、方法
         */

        // 创建school组件
        const school = Vue.extend({
            template:`
                <div>
                    <h2>学校:{{schoolName}}</h2>
                    <h2>地址:{{address}}</h2>
                    <button @click="getX">获取X</button>
                </div>`,
            data(){
                return {
                    schoolName:'北邮',
                    address:'北京',
                }
            },
            methods: {
                getX(){
                    alert(this.x)
                }
            }
        })

        console.log(school)
        
        // 创建vm
        new Vue({
            el: '#root',
            // template:`<app></app>`,
            // 注册组件
            components:{
                // key:value  k可以随意，value必须和组件对应
                school, 
            }
        })
    </script>

</body>
</html>